import numpy as np
import matplotlib.pyplot as plt

print "Populationsdynamik"
print " "

'''Klasse zur Simulation der Population mit Hilfe von Geburten- und
Sterberate'''
class Population:

    '''Initialisierung der Attribute pop, birthrate & deathrate'''
    def __init__(self, pop, birthrate, deathrate):
        self.pop = [pop]
        self.birthrate = birthrate
        self.deathrate = deathrate
        print pop, birthrate, deathrate

    '''Berechnung der Anzahl der Geburten, abhaenging von der Geburtenrate'''    
    def birth(self, pop):
        return pop*self.birthrate*timestep

    '''Berechnung der Anzahl der Todesfaelle, abhaengig von der Sterberate'''
    def death(self, pop):
        return pop*self.deathrate*timestep

    '''Simulation der Populationsentwicklung'''            
    def popsim(self):
        i = 0
        while i < timerange/timestep:
            self.pop.append(self.pop[i]+self.birth(self.pop[i])-self.death(self.pop[i]))
            i = i+1
            print "Population, Zeitpunkt", self.pop[i], "  ", i*timestep
        return self.pop

    '''Darstellung der errechneten Werte in einem Diagramm'''
    def plotPop(self):
        plot = plt.plot(self.pop)      # erzeugt Diagramm aus uebergebenen Werten
        plt.ylabel("Population")       # Bezeichnung der y-Achse
        plt.xlabel("time")             # Bezeichnung der x-Achse
        plt.show(plot)                 # zeigt Diagramm

'''Testumgebung zum Aufruf aller erstellten def'''
timestep = 0.125
timerange = 100
myPop = Population(20, 0.2, 0.1)
test = myPop.popsim()
myPop.plotPop()

print " "
print "____________________Ende_____________________"


